home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
pc
/
LOGIC Apple II 5.25" Library - DOS Part 3
/
DOS078A.dsk
/
ERROR HANDLER.bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
5KB
|
112 lines
0 ONERR GOTO 63952
1 REM TEST LINE
5 HOME : SPEED= 75
10 PRINT " ERROR HANDLER"
20 PRINT " BY"
30 PRINT " ROB STEWART"
40 FOR I = 1 TO 1000: NEXT I
41 REM *************************
42 REM * DONATED BY AUTHOR TO *
43 REM * NORTHERN ILLINOIS AUG *
44 REM * DELCARED PUBLIC DOMAIN*
45 REM *************************
50 PRINT : PRINT
60 PRINT " THIS IS A PROGRAM DEBUGGING AID"
70 PRINT "THAT I WROTE TO HELP MYSELF."
80 PRINT : PRINT
90 PRINT "PERHAPS YOU WILL FIND IT USEFUL ALSO."
100 PRINT : PRINT : PRINT
110 INVERSE : PRINT "HOW TO USE...": NORMAL : PRINT
120 PRINT "START WITH THIS BASIC PROGRAM."
130 PRINT "DELETE LINES 1 THRU 1000"
140 PRINT " (THAT REMOVES THESE INSTRUCTIONS)"
150 PRINT "THEN WRITE YOUR PROGRAM BETWEEN "
160 PRINT "LINES 0 - 63000"
170 PRINT
180 PRINT "IF AN ERROR OCCURS, THE ERROR WILL BE"
190 PRINT "DESCRIBED & THE LINE WHERE IT OCCURRED"
200 PRINT "WILL THEN BE LISTED FOR YOU."
210 PRINT : PRINT : PRINT
220 INVERSE : PRINT "METHOD...": NORMAL : PRINT
230 PRINT "LINE 0 IS THE ONERR GOTO"
240 PRINT
250 PRINT "WHEN AN ERROR IS ENCOUNTERED THE "
260 PRINT "PROGRAM JUMPS TO THE ERROR HANDLER."
270 PRINT : PRINT " THE ERROR HANDLER THEN PRINTS OUT THE"
280 PRINT "TYPE OF ERROR. THE LINE WHERE THE ERROR"
290 PRINT "OCCURRED IS THEN POKED INTO THE LAST"
300 PRINT "LINE IN THE PROGRAM, THE NEW END OF"
310 PRINT "PROGRAM IS DETERMINED AND POKED"
320 PRINT "INTO MEMORY, & THEN THE LINE IS LISTED."
330 PRINT : PRINT : PRINT
340 PRINT "I WILL NOW POKE THE LINE-IN-ERROR = 1"
350 PRINT "AND LET YOU SEE WHAT HAPPENS."
360 PRINT
370 PRINT "I WILL NOT CHANGE THE ERROR, SO WHAT-"
380 PRINT "EVER WAS THERE IS WHAT YOU WILL GET."
381 PRINT : PRINT "WHEN YOU ARE DONE TESTING THE PROGRAM,"
382 PRINT "BE SURE TO EITHER CHANGE THE ONERR GOTO"
383 PRINT "OR WRITE YOUR OWN ERROR HANDLER TO TAKE"
384 PRINT "THE PLACE OF MINE.": PRINT : PRINT
390 POKE 218,1: POKE 219,0
999 PRINT "PAUSE....": FOR I = 1 TO 3000: NEXT I
1000 SPEED= 255: GOTO 63952
63951 SPEED= 255: END
63952 REM *** ERROR HANDLER ***
63953 ER = PEEK(222)
63954 EL = PEEK(218) + PEEK(219) *256
63955 TEXT : HOME
63956 IF ER = 0 THEN INVERSE : PRINT "NEXT";: NORMAL : PRINT " WITHOUT ";: INVERSE : PRINT "FOR";: NORMAL : GOTO 63975
63957 IF ER = 16 THEN INVERSE : PRINT "SYNTAX ERROR";: NORMAL : GOTO 63975
63958 IF ER = 22 THEN INVERSE : PRINT "RETURN";: NORMAL : PRINT " WITHOUT ";: INVERSE : PRINT "GOSUB";: NORMAL : GOTO 63975
63959 IF ER = 42 THEN INVERSE : PRINT "OUT OF DATA";: NORMAL : GOTO 63975
63960 IF ER = 53 THEN INVERSE : PRINT "ILLEGAL QUANTITY";: NORMAL : GOTO 63975
63961 IF ER = 69 THEN INVERSE : PRINT "OVERFLOW";: NORMAL : GOTO 63975
63962 IF ER = 77 THEN INVERSE : PRINT "OUT OF MEMORY";: NORMAL : GOTO 63975
63963 IF ER = 90 THEN INVERSE : PRINT "UNDEFINED STATEMENT";: NORMAL : GOTO 63975
63964 IF ER = 107 THEN INVERSE : PRINT "BAD SUBSCRIPT";: NORMAL : GOTO 63975
63965 IF ER = 120 THEN INVERSE : PRINT "REDIMENSIONED ARRAY";: NORMAL : GOTO 63975
63966 IF ER = 133 THEN INVERSE : PRINT "DIVIDED BY 0 ";: NORMAL : GOTO 63975
63967 IF ER = 163 THEN INVERSE : PRINT "TYPE MISMATCH";: NORMAL : GOTO 63975
63968 IF ER = 176 THEN INVERSE : PRINT "STRING TO LONG";: NORMAL : GOTO 63975
63969 IF ER = 191 THEN INVERSE : PRINT "FORMULA TOO COMPLEX";: NORMAL : GOTO 63975
63970 IF ER = 224 THEN INVERSE : PRINT "UNDEFINED FUNCTION";: NORMAL : GOTO 63975
63971 IF ER = 254 THEN INVERSE : PRINT "BAD RESPONSE TO";: NORMAL : PRINT " INPUT ";: INVERSE : PRINT "STATEMENT": NORMAL : GOTO 63975
63972 IF ER = 255 THEN INVERSE : PRINT "CONTROL";: NORMAL : PRINT " C ";: INVERSE : PRINT "INTERUPT ATTEMPTED": NORMAL : GOTO 63975
63973 FLASH : PRINT "UNKNOWN ERROR CODE";: NORMAL
63974 PRINT " ERROR = ";ER
63975 PRINT " IN LINE # ";: INVERSE : PRINT EL: NORMAL
63976 HE = PEEK(176) *256
63977 LE = PEEK(175)
63978 EP = HE +LE
63979 IF PEEK(EP) = 255 GOTO 63981
63980 EP = EP -1: GOTO 63979
63981 IF PEEK(EP -1) = 255 GOTO 63983
63982 PRINT : PRINT "NO LINE # 65535": END
63983 EP = EP +1: POKE EP,188
63984 FOR I = 1 TO LEN( STR$(EL))
63985 POKE EP +I, ASC( MID$ ( STR$(EL),I,1)): NEXT I
63986 EP = EP + LEN( STR$(EL))
63987 POKE EP +1,58
63988 POKE EP +2,128
63989 POKE EP +3,0
63990 POKE EP +4,0
63991 POKE EP +5,0
63992 POKE EP +6,10
63993 EP = EP +6
63994 HE = 0:LE = 0
63995 IF EP <256 THEN GOTO 63997
63996 EP = EP -256:HE = HE +1: GOTO 63995
63997 LE = EP
63998 POKE 176,HE: POKE 175,LE
63999 REM
65526 REM
65527 REM WRITTEN BY
65528 REM
65529 REM ROBERTS R. STEWART
65530 REM 763 SOUTH WAYNE PLACE
65531 REM WHEELING, IL 60090
65532 REM
65533 REM COPYRIGHT OCT 1980
65534 REM
65535 LIST 1: END